package com.vcredit.creditcat.api;

import com.vcredit.creditcat.dto.BankcardInitDto;
import com.vcredit.creditcat.dto.BankcardInitResult;
import com.vcredit.creditcat.dto.BankcardSubmitDto;
import com.vcredit.creditcat.dto.CreditLoginDto;
import com.vcredit.creditcat.dto.InitDto;
import com.vcredit.creditcat.dto.NetCreditBaseResultDto;
import com.vcredit.creditcat.dto.QuestionFirstStepDto;
import com.vcredit.creditcat.dto.QuestionSecondDto;
import com.vcredit.creditcat.dto.RegisterFirstStepDto;
import com.vcredit.creditcat.dto.RegisterSecondStepDto;
import com.vcredit.creditcat.dto.RegisterThirdStepDto;
import com.vcredit.creditcat.dto.ReportDto;
import com.vcredit.creditcat.dto.ReportResponseDto;

public interface IAuthNetCreditManager {

	InitDto init(Long processId, Long custId) throws Exception;

	BankcardInitResult bankcardInit(Long custId, BankcardInitDto param) throws Exception;

	NetCreditBaseResultDto bankcardSubmit(Long custId, BankcardSubmitDto param) throws Exception;

	NetCreditBaseResultDto login(Long processId, Long custId, CreditLoginDto param) throws Exception;

	NetCreditBaseResultDto getQuestion(QuestionFirstStepDto param) throws Exception;

	NetCreditBaseResultDto sumbitAnswer(Long custId, QuestionSecondDto param) throws Exception;

	NetCreditBaseResultDto register(RegisterFirstStepDto param) throws Exception;

	NetCreditBaseResultDto registerVerifyMobile(Long custId, RegisterSecondStepDto param) throws Exception;

	NetCreditBaseResultDto registerSubmit(RegisterThirdStepDto param) throws Exception;

	String summary(Long custId) throws Exception;

	NetCreditBaseResultDto summaryReport(Long processId, Long custId, ReportDto input) throws Exception;
	
	ReportResponseDto reportAll(Long processId, Long custId) throws Exception;

	String applyResult(Long custId) throws Exception;
	
	void sendReport(Long processId, Long custId, String email) throws Exception;

}
